// pages/news-detail/news-detail.js
import {
  httpServer,
  COS_HOST
} from '../../utils/httpServer';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    id: 0,
    title: '',
    content: '',
    // 轮播图相关
    current: 0,
    autoplay: false,
    duration: 500,
    interval: 5000,

    banner: [],
    marginTop: 0,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.setData({
      id: options.id,
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getDetail();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  getDetail() {
    wx.showLoading({
      mask: true,
      title: '加载中',
    });
    httpServer('POST', 'Home', 'GetArticle', {
      id: this.data.id,
    }).then(res => {
      wx.hideLoading();
      if (res.result == 'success') {
        const {
          info
        } = res;
        wx.setNavigationBarTitle({
          title: info.name,
        })
        let banner = JSON.parse(info.banner);
        banner = banner.map(item => {
          return COS_HOST + item;
        });
        let { content } = info;
        content = content.replace(/<video/ig, '<video style="width: 100%;"');
        this.setData({
          title: info.name,
          content,
          banner,
        }, () => {
          this.calcHeight();
          wx.hideLoading();
        });
      } else {
        wx.showToast({
          icon: 'none',
          title: res.info,
        });
      }
    }).catch(err => {
      wx.hideLoading();
      console.error(err);
    });
  },

  /**
   * 计算detail-container高度，给items-container添加上边距
   */
  calcHeight() {
    const detailContainer = wx.createSelectorQuery();
    detailContainer.select('#detail-container').boundingClientRect();
    detailContainer.exec(res => {
      this.setData({
        marginTop: res[0].height - 16,
      });
    });
  },
})